<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database tables serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize each entire table from the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a> (3202 records) 1 Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>460508</td><th>4.08x</th><td>30193041</td><td>80763207</td><td>110956248</td><td>110956.248</td><th>5.95x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>344645</td><th>3.06x</th><td>58570505</td><td>180782491</td><td>239352996</td><td>239352.996</td><th>12.84x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>118407</td><th>1.05x</th><td>74408700</td><td>30710333</td><td>105119033</td><td>105119.033</td><th>5.64x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>346173</td><th>3.07x</th><td>69063296</td><td>156256568</td><td>225319864</td><td>225319.864</td><th>12.08x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>112762</td><th>1x</th><td>8281289</td><td>10366932</td><td>18648221</td><td>18648.221</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>247146</td><th>2.19x</th><td>28158149</td><td>27805458</td><td>55963607</td><td>55963.607</td><th>3.00x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>289323</td><th>2.57x</th><td>18830261</td><td>56557793</td><td>75388054</td><td>75388.054</td><th>4.04x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>1232</td><th>3.23x</th><td>65687</td><td>153953</td><td>219640</td><td>219.64</td><th>2.44x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>672</td><th>1.76x</th><td>108336</td><td>282882</td><td>391218</td><td>391.218</td><th>4.34x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1127</td><th>2.96x</th><td>380947</td><td>326923</td><td>707870</td><td>707.87</td><th>7.85x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>790</td><th>2.07x</th><td>110251</td><td>296603</td><td>406854</td><td>406.854</td><th>4.51x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>381</td><th>1x</th><td>19400</td><td>113402</td><td>132802</td><td>132.802</td><th>1.47x</th></tr><tr class='best-time'><th class='c1'>ServiceStack TypeSerializer</th><td>598</td><th>1.57x</th><td>40145</td><td>50017</td><td>90162</td><td>90.162</td><th>1x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>622</td><th>1.63x</th><td>33794</td><td>87102</td><td>120896</td><td>120.896</td><th>1.34x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>32721</td><th>2.62x</th><td>1559677</td><td>7125175</td><td>8684852</td><td>8684.852</td><th>5.30x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>23869</td><th>1.91x</th><td>2272538</td><td>12072300</td><td>14344838</td><td>14344.838</td><th>8.76x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>16132</td><th>1.29x</th><td>4421039</td><td>3360595</td><td>7781634</td><td>7781.634</td><th>4.75x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>25229</td><th>2.02x</th><td>2913592</td><td>6155296</td><td>9068888</td><td>9068.888</td><th>5.54x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>12492</td><th>1x</th><td>731020</td><td>907185</td><td>1638205</td><td>1638.205</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>19140</td><th>1.53x</th><td>984316</td><td>1476881</td><td>2461197</td><td>2461.197</td><th>1.50x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>20928</td><th>1.68x</th><td>1131284</td><td>2483668</td><td>3614952</td><td>3614.952</td><th>2.21x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>7437</td><th>1.89x</th><td>257449</td><td>829356</td><td>1086805</td><td>1086.805</td><th>2.97x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>6160</td><th>1.57x</th><td>492297</td><td>1745589</td><td>2237886</td><td>2237.886</td><th>6.11x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>5247</td><th>1.34x</th><td>836876</td><td>541723</td><td>1378599</td><td>1378.599</td><th>3.77x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>6241</td><th>1.59x</th><td>555321</td><td>1503875</td><td>2059196</td><td>2059.196</td><th>5.63x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>3930</td><th>1x</th><td>222435</td><td>143617</td><td>366052</td><td>366.052</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>5187</td><th>1.32x</th><td>266349</td><td>347540</td><td>613889</td><td>613.889</td><th>1.68x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>5709</td><th>1.45x</th><td>202485</td><td>588801</td><td>791286</td><td>791.286</td><th>2.16x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>5236</td><th>0x</th><td>166868</td><td>622333</td><td>789201</td><td>789.201</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1912</td><th>0x</th><td>252092</td><td>1066623</td><td>1318715</td><td>1318.715</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1969</td><th>0x</th><td>553237</td><td>509726</td><td>1062963</td><td>1062.963</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2647</td><th>0x</th><td>556322</td><td>1183685</td><td>1740007</td><td>1740.007</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>980</td><th>0x</th><td>106697</td><td>-1</td><td>106696</td><td>106.696</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2157</td><th>0x</th><td>157132</td><td>194451</td><td>351583</td><td>351.583</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1716</td><th>0x</th><td>99074</td><td>274439</td><td>373513</td><td>373.513</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>331678</td><th>0x</th><td>22183467</td><td>67665305</td><td>89848772</td><td>89848.772</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>165567</td><th>0x</th><td>34941973</td><td>120547290</td><td>155489263</td><td>155489.263</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>78378</td><th>0x</th><td>43551204</td><td>35331327</td><td>78882531</td><td>78882.531</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>204384</td><th>0x</th><td>75487075</td><td>145009766</td><td>220496841</td><td>220496.841</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>60253</td><th>0x</th><td>8004345</td><td>-1</td><td>8004344</td><td>8004.344</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>169694</td><th>0x</th><td>27998454</td><td>30415031</td><td>58413485</td><td>58413.485</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>127182</td><th>0x</th><td>11840049</td><td>-1</td><td>11840048</td><td>11840.048</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>400652</td><th>4.64x</th><td>27597177</td><td>69715791</td><td>97312968</td><td>97312.968</td><th>6.18x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>302174</td><th>3.50x</th><td>54649193</td><td>161921422</td><td>216570615</td><td>216570.615</td><th>13.75x</th></tr><tr class='best-size'><th class='c1'>Microsoft BinaryFormatter</th><td>86323</td><th>1x</th><td>66889068</td><td>24660597</td><td>91549665</td><td>91549.665</td><th>5.81x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>302158</td><th>3.50x</th><td>64017756</td><td>144626518</td><td>208644274</td><td>208644.274</td><th>13.24x</th></tr><tr class='best-time'><th class='c1'>ProtoBuf.net</th><td>90569</td><th>1.05x</th><td>6964102</td><td>8788607</td><td>15752709</td><td>15752.709</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>212942</td><th>2.47x</th><td>26380308</td><td>25173774</td><td>51554082</td><td>51554.082</td><th>3.27x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>252061</td><th>2.92x</th><td>16950527</td><td>52086302</td><td>69036829</td><td>69036.829</td><th>4.38x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>25851</td><th>0x</th><td>952195</td><td>4057495</td><td>5009690</td><td>5009.69</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>15365</td><th>0x</th><td>1416916</td><td>7531304</td><td>8948220</td><td>8948.22</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6819</td><th>0x</th><td>2233023</td><td>1947947</td><td>4180970</td><td>4180.97</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>15449</td><th>0x</th><td>2196864</td><td>7407357</td><td>9604221</td><td>9604.221</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>4044</td><th>0x</th><td>296627</td><td>-1</td><td>296626</td><td>296.626</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>13517</td><th>0x</th><td>848853</td><td>1308885</td><td>2157738</td><td>2157.738</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>11103</td><th>0x</th><td>566958</td><td>-1</td><td>566957</td><td>566.957</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>485</td><th>0x</th><td>35385</td><td>88631</td><td>124016</td><td>124.016</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>159</td><th>0x</th><td>54331</td><td>124050</td><td>178381</td><td>178.381</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>628</td><th>0x</th><td>114197</td><td>122390</td><td>236587</td><td>236.587</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>159</td><th>0x</th><td>38358</td><td>112649</td><td>151007</td><td>151.007</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>54</td><th>0x</th><td>8892</td><td>-1</td><td>8891</td><td>8.891</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>135</td><th>0x</th><td>16296</td><td>12014</td><td>28310</td><td>28.31</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>143</td><th>0x</th><td>9708</td><td>32751</td><td>42459</td><td>42.459</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>486</td><th>4.42x</th><td>28239</td><td>70528</td><td>98767</td><td>98.767</td><th>5.66x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>198</td><th>1.8x</th><td>58929</td><td>129531</td><td>188460</td><td>188.46</td><th>10.79x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>700</td><th>6.36x</th><td>119619</td><td>122763</td><td>242382</td><td>242.382</td><th>13.88x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>198</td><th>1.8x</th><td>37530</td><td>109687</td><td>147217</td><td>147.217</td><th>8.43x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>110</td><th>1x</th><td>7283</td><td>10176</td><td>17459</td><td>17.459</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>168</td><th>1.53x</th><td>21553</td><td>12650</td><td>34203</td><td>34.203</td><th>1.96x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>180</td><th>1.64x</th><td>16004</td><td>34424</td><td>50428</td><td>50.428</td><th>2.89x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>11521</td><th>2.79x</th><td>451267</td><td>1775909</td><td>2227176</td><td>2227.176</td><th>4.25x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>8253</td><th>2.00x</th><td>644876</td><td>2984185</td><td>3629061</td><td>3629.061</td><th>6.92x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6032</td><th>1.46x</th><td>1049230</td><td>992553</td><td>2041783</td><td>2041.783</td><th>3.89x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>8238</td><th>1.99x</th><td>866449</td><td>2275071</td><td>3141520</td><td>3141.52</td><th>5.99x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>4135</td><th>1x</th><td>246798</td><td>277789</td><td>524587</td><td>524.587</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>6322</td><th>1.53x</th><td>307096</td><td>476996</td><td>784092</td><td>784.092</td><th>1.49x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>6822</td><th>1.65x</th><td>330368</td><td>821385</td><td>1151753</td><td>1151.753</td><th>2.20x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>6459</td><th>5.64x</th><td>233545</td><td>1092495</td><td>1326040</td><td>1326.04</td><th>6.13x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>3319</td><th>2.90x</th><td>344336</td><td>1646582</td><td>1990918</td><td>1990.918</td><th>9.20x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>2846</td><th>2.49x</th><td>711921</td><td>705179</td><td>1417100</td><td>1417.1</td><th>6.55x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>3319</td><th>2.90x</th><td>562397</td><td>1289518</td><td>1851915</td><td>1851.915</td><th>8.56x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>1145</td><th>1x</th><td>90251</td><td>126156</td><td>216407</td><td>216.407</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2789</td><th>2.44x</th><td>158382</td><td>267600</td><td>425982</td><td>425.982</td><th>1.97x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>3001</td><th>2.62x</th><td>165799</td><td>456111</td><td>621910</td><td>621.91</td><th>2.87x</th></tr>
</tbody>
</table>
</body>
</html>

